package E_2024;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/*
    题目描述
        TLV编码是按 [Tag Length Value] 格式进行编码的，一段码流中的信元用 Tag 标识，Tag 在码流中唯一不重复，Length 表示信元Value的长度，Value 表示信元的值。
        码流以某信元的 Tag 开头，Tag 固定占一个字节，Length 固定占两个字节，字节序为小端序。
        现给定 TLV 格式编码的码流，以及需要解码的信元 Tag，请输出该信元的 Value。
        输入码流的 16 进制字符中，不包括小写字母，且要求输出的 16 进制字符串中也不要包含小写字母；码流字符串的最大长度不超过 50000 个字节。
    输入描述
        输入的第一行为一个字符串，表示待解码信元的Tag；
        输入的第二行为一个字符串，表示待解码的 16 进制码流，字节之间用空格分隔。
    输出描述
        输出一个字符串，表示待解码信元以 16 进制表示的 Value。
    输入
        31
        32 01 00 AE 90 02 00 01 02 30 03 00 AB 32 31 31 02 00 32 33 33 01 00 CC
    输出
        32 33
 */
public class E_100_12 {
    public static Map<Character,Integer> map = new HashMap<>();
    public static void main(String[] args) {
        map.put('0',0);
        map.put('1',1);
        map.put('2',2);
        map.put('3',3);
        map.put('4',4);
        map.put('5',5);
        map.put('6',6);
        map.put('7',7);
        map.put('8',8);
        map.put('9',9);
        map.put('A',10);
        map.put('B',11);
        map.put('C',12);
        map.put('D',13);
        map.put('E',14);
        map.put('F',15);
        ans("31",new String[]{"32","01","00","AE","90","02","00","01","02","30","03","00","AB","32","31","31","02","00","32","33","33","01","00","CC"});
    }
    public static void ans(String index, String[] str){
        for (int i = 0; i < str.length;) {
            String temp = str[i++];
            String s = str[i++];
            String l = str[i++];
            int num = 0;
            // 计算后续有多少个单元
            num += map.get(s.charAt(1));
            num += map.get(s.charAt(0))*16;
            num += map.get(l.charAt(1))*160;
            num += map.get(l.charAt(0))*1600;
            // 判断Tag是否是指定的
            if (Objects.equals(temp, index)){
                for (int k = 0; k < num; k++) {
                    System.out.print(str[i+k]+" ");
                }
            }
            i = i + num;
        }
    }
}
